package fiuba.algo3;


import fiuba.algo3.controlador.Controlador;
import fiuba.algo3.controlador.ControladorMouse;
import fiuba.algo3.controlador.ControladorTeclado;
import fiuba.algo3.ObjetoRobado.ConsultorObjetoRobado;
import fiuba.algo3.motor.ConsultorPistas;
import fiuba.algo3.vista.Vista;
import fiuba.algo3.vista.VistaConsola;
import fiuba.algo3.vista.VistaVentanas;

public class Juego
{
	
	static Jugador jugador;
	static Vista vista;
	static Controlador control;


	
	
	
	
	public static void main(String [ ] args)
	{
		
		Juego.jugarConVentanas();				//Si se quiere jugar por consola, hay que modificar esto
		
	}
	
	

	
	
		
	public static void jugarConVentanas() {
		
		vista = new VistaVentanas();
		control = new ControladorMouse();
		jugador = new Jugador();
		
		try {
			Thread.sleep(100);		//Para que se inicialice correctamente la ventana
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		
		ConsultorPistas.inicializar();
		ConsultorObjetoRobado.inicializar();
		SistemaInterpol.IniciarSistema();
		
		ControladorMouse c = (ControladorMouse)control;
		c.asignarPrimerBoton((VistaVentanas)vista);
		vista.mostrarInicioJuego();
		
	}
	
	
	public static void jugarPartidaVentanas(String nombreJugador)
	{
		jugador.setearNombre(nombreJugador);
		Partida partida = new Partida(jugador);
		
		ControladorMouse c = (ControladorMouse)control;
		c.asignarBotones((VistaVentanas)vista, partida);
		vista.mostrarInfoPartida(partida);
		
	}
	
	
	

	
	
	
	
	
	
	
	// METODOS PARA JUGAR CON CONSOLA
	
	
	public static void jugarConConsola()
	{
		vista = new VistaConsola();
		control = new ControladorTeclado();
		jugador = new Jugador();

		
		vista.mostrarInicioJuego();

		jugador.setearNombre(control.recibirNombreJugador());
		ConsultorPistas.inicializar();
		ConsultorObjetoRobado.inicializar();
		SistemaInterpol.IniciarSistema();
		
		
		do	
			{
				Juego.jugarPartidaConsola();

			} while(control.recibirComandoFinDePartida());
		
	}

	public static void jugarPartidaConsola()
	{
		Partida partida = new Partida(jugador);
		vista.mostrarInfoPartida(partida);
		
		control.recibirOK(vista);
	
		do
		{
		
			vista.mostrarMenuPrincipal(partida);
			control.recibirComandoPrincipal(vista, partida);
	
		} while(!partida.perdioPartida() && !partida.ganoPartida());
	
		vista.mostrarFinPartida();
		
	}
	

	
}